package jers.util;

/**
 * Interface que define o logger do sistema.
 * 
 * @author 
 * 		<a href="mailto:felipe.zappala@gmail.com">
 * 			Luis Felipe Zappala
 * 		</a> [ <a href="http://lncc.br/ist">ISTCC-P</a> / 2009 ]
 */
public interface Logger {

	/**
	 * Grava uma mensagem de informacao no log.
	 * 
	 * @param 
	 * 		msg - A mensagem a ser gravada. 
	 */
	public abstract void info(Object... msg);

	/**
	 * Grava uma mensagem de erro no log.
	 * 
	 * @param 
	 * 		msg - A mensagem a ser gravada. 
	 */
	public abstract void error(Object... msg);

	/**
	 * Grava uma mensagem de erro no log.
	 * 
	 * @param
	 * 		thrown - O {@link Throwable} que causou o erro.
	 * @param 
	 * 		msg - A mensagem a ser gravada. 
	 */
	public abstract void error(Throwable thrown, Object... msg);

	/**
	 * Verifica se o logger esta configurado para uso.
	 * O valor padrao e {@code true}, para o logger habilitado. 
	 * 
	 * @return
	 * 		O estado do uso do logger.
	 */
	public abstract boolean isUseLogger();

	/**
	 * Configura o estado do logger para uso.
	 * O valor padrao e {@code true}, para o logger habilitado.
	 * 
	 * @param 
	 * 		useLogger - Caso for {@code true}, define para usar o logger. 
	 */
	public abstract void setUseLogger(boolean useLogger);

}